#ifndef __CKEY_H_
#define __CKEY_H_

typedef enum key_flag{
    KF_DEFAULT=   0x00,           //
    KF_COUNT,                //开始计时
    KF_VALID,                //消抖后有效
    KF_OUT,                  //按键输出
    KF_LONG_KEY,             //长按键标志
    KF_SHORT_KEY,            //短按键标志
}KEY_FLAG;


typedef enum key_value{
    KV_DEFAULT = 0,
    KV_SHORT   = 1,
    KV_LONG    = 2,
}KEY_VALUE;


// typedef uint8_t (*cKey_read_func)(...);
typedef struct{
    KEY_VALUE value;
    KEY_VALUE lastVaule;
    KEY_FLAG  flag;
    unsigned int  time;
    char info[10];
}KEY_STRUCT;

extern KEY_LABLE;
extern void cKey_exti_interrupt_handler(KEY_LABLE lable);
extern void cKey_timer_interrupt_handler(KEY_LABLE lable);
extern uint8_t key_deal(void);
#endif

/*********************************************************/
//int *p[10];  //指针数组
//int (*p)[10];//数组指针
//int (*func)(int a);//函数指针
//int (*func[10])(int a);  //函数指针数组
//int (*(*func[10]))(int a);//函数数组指针 (指向函数指针数组)
/*********************************************************/